package base

/*
* @author: hjz
* @time: 2025/4/28 22:01
*1 -> 2 -> 3 -> 4 -> 5 -> nil
 */

func isPalindrome(head *ListNode) bool {
	// 定义一个全局变量用于正向遍历
	var front *ListNode = head

	// 递归函数，用于回溯比较
	var check func(*ListNode) bool
	check = func(current *ListNode) bool {
		if current != nil {
			if !check(current.Next) {
				return false
			}
			// 回溯时比较当前节点与正向节点
			if current.Val != front.Val {
				return false
			}
			// 正向节点后移
			front = front.Next
		}
		return true
	}

	return check(head)
}
